<?php

/* 头部编码 主要看网址是啥 */
header("Content-Type:text/html;charset=utf-8");

$content = file_get_contents("https://www.readnovel.com/book/28507703204091504#Catalog");
// var_dump($content);
set_time_limit(0); //设置脚本运行时间为0
// 给一个默认 user_agent 让他认为自己是浏览器
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)');
// 写正则
$res = "/<div\s*class=\"volume\">.*<\/div>/imsU";
preg_match($res, $content, $reg);
//判断唯一的结果

$reg = isset($reg[0]) ? trim($reg[0]) : "";
//判断结果是否为空
if(empty($reg)){
    echo"匹配的结果为空]\r\n";
    exit;
}
echo"开始采集\r\n";

// var_dump($reg);
// exit;

//获取每个链接的a标签
// (.*) 带括号和不带括号的区别是 带括号 会把里面每个值都遍历成一个数组的形式 不带括号就是一个数组形式遍历
$abi = "/<a\s*href=\"(.*)\"\s*target=\"_blank\">(.*)<\/a>/imsU";

preg_match_all($abi, $reg, $pug);
// var_dump($pug);
// exit;
$links = isset($pug[1]) ? $pug[1] :[];
$titles = isset($pug[2]) ? $pug[2]:[];

if(empty($links)||empty($titles)){
    echo "链接和标题未获取\r\n";
    exit;
}
echo "已采集到列表和标题\r\n";
// 每次循环的时候值为0 防止覆盖
$filename = date("y-m-d h-i",time()).".txt";
foreach($links as $key=>$value){
    // 编制标题
    $title = " 《".$titles[$key]."》";
    // 编制跳转的url地址
    $url = "https://www.readnovel.com/".$value;

    // 再次读取url链接里面的内容

    $content = file_get_contents($url);
    //获取链接标题里面的内容
    if(empty($content))
    {
        echo "$title 未获取到\r\n";
        continue;  //退出一次
    }
    //书写正则表达式
    $reg = "/<div?\s*class=\"ywskythunderfont\">.*<\/div>/imsU";
    // 获取文本内容
    preg_match($reg, $content, $description);

    $description = isset($description[0]) ? $description[0] :"";
    if(empty($description)){
        echo "$title 未获取文本内容\t\n";
        continue;
    }
    // 去除文本内的p标签
    $reg = "/<p>|<\/p>/ims";
    $description =  preg_replace($reg,"\r\n", $description);
    //去除script标签 
    $reg = "/<script\s*id=\"enContentLoader\">.*<\/script>/imsU";
    $description =  preg_replace($reg,"", $description);
    //返回一个字符串
    // var_dump($description);
    // exit;


    //把其他标签也去除掉
    $description = strip_tags($description);
    echo "已采集: $title \r\n";
    //   var_dump($description);
    // exit;
    //把文章内容拔下来放入 txt文件中 
    // 拼接每次输入的结果
    $result = "$title \r\n $description \r\n";
    // 使用追加好使FILE_APPEND 是将文件的内容追加到末尾
    file_put_contents("./$filename", $result,FILE_APPEND);
    //防止被识别
    sleep(0.5);
}
//设置填入文本的内容 
//date("y-m-d h-i",time()) 以时间来命名文件


// 将读取的结果放入文件中
// FILE_APPEND 追加
echo "采集结束\r\n";










?>